<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //为什么需要构造函数
        //就是因为前面两种创建对象的方式一次只能创建1个;
        //因为我们一次创建一个对象,里面很多属性和方法都是大量相同的 我们只能复制
        //因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为构造函数
        //又因为这个函数不一样 里面封装的不是普通代码,而是对象
        //构造函数就是把我们对象里面的一些相同的属性和方法抽象出来封装到函数里面

        //利用构造函数创建对象;
        //构造函数的语法格式
        // function 构造函数名() {
        //     this.属性 = 值;
        //     this.方法 = function () {}
        // }
        // new 构造函数名();


        //1.构造函数 明星 泛指的某一大类 它类似于java 语言里面的 类class
        function Star(uname,age,sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function (song) {
                console.log(song);
            }
        }
        //2.对象特指 是一个具体的事物 刘德华 == {''}
        var ldh = new Star('刘德华',18,'男');//调用函数返回的是一个对象
        console.log(typeof ldh);
        console.log(ldh.name);
        console.log(ldh['sex']);
        ldh.sing('冰雨');
        var zxy = new Star()
        //1.构造函数的名字首字母要大写
        //2.构造函数不需要return
        //3.我们调用构造函数 必须使用new
        //4.我们只要new Star() 调用函数就创建一个对象 1dh{}
        //5.属性和方法前面必须添加this


        function Hero(name,type,blood,attack) {
                this.name = name;
                this.type = type;
                this.blood = blood;
                this.attack = attack;
        }
        var lianpo = new Hero('廉颇','力量型','500血量','近战');
        console.log(lianpo.name);
    </script>
</head>
<body>

</body>
</html>